home *** CD-ROM | disk | FTP | other *** search
/ CD Ware Multimedia 1995 May / cd Ware (Juegos) Epimundo.iso / DOS / C / SPPBC3.ZIP / SPPDEMO.CPP < prev    next >
Encoding:
C/C++ Source or Header  |  1992-05-10  |  6.1 KB  |  270 lines

  1. //============================================================================
  2. //
  3. //  SPPDEMO.CPP
  4. //
  5. //  Demo program for Serial++ Library SPP.LIB Ver. 1.10
  6. //
  7. //  Copyright (c) 1991,1992 Cortlandt Technologies, All rights reserved.
  8. //
  9. //  Cortlandt Technologies, P.O. Box 195, Pleasantville NY 10570
  10. //
  11. //  Please direct all inquiries to the above address,
  12. //  or via Compuserve: 71066,155
  13. //
  14. //============================================================================
  15. #include <stdlib.h>
  16. #include <stdio.h>
  17. #include <string.h>
  18. #include <ctype.h>
  19. #include <dos.h>
  20.  
  21. #include "serial.h"
  22.  
  23. //============================================================================
  24. //
  25. //    Setup up command line defaults
  26.  
  27.     CommPort cp = COM_1;        // COM1:
  28.  
  29.     Baud      bd = B_1200;        // 1200 baud
  30.  
  31.     DataBits  db = D_8;        // 8 data bits
  32.  
  33.     Parity     ps = P_N;        // no parity
  34.  
  35.     StopBits  sb = S_1;        // 1 stop bit
  36.  
  37.  
  38. //============================================================================
  39. //
  40. //    Globals
  41.  
  42.     char buffer[255];            // buffer for messages
  43.  
  44.     SerialPort *com;             // pointer to a SerialPort -- used in
  45.                                           // main routine to establish port
  46.  
  47. //============================================================================
  48. //
  49. //    Prototypes of functions in this file
  50.  
  51.     StopBits  cl_StopBits(const char *cltok);
  52.     Parity    cl_Parity(const char *cltok);
  53.     DataBits  cl_DataBits(const char *cltok);
  54.     Baud      cl_Baud(const char *cltok);
  55.     CommPort  cl_CommPort(const char *cltok);
  56.     void      printUsage(void);
  57.  
  58. //============================================================================
  59. //
  60. //    Main program
  61. //
  62. //----------------------------------------------------------------------------
  63. void
  64. main(void)
  65. {
  66.     unsigned char cc;
  67.  
  68. //     Banner
  69.     printf("\n SPPDEMO - Demo program for SPP.LIB\n Copyright (c) 1991 Cortlandt Technologies, All rights reserved.\n\n Type $$$ at prompt or press Ctrl-Break to exit.\n");
  70.  
  71. //    parse command line
  72.     switch (_argc)          // depending on number of
  73.         {               // command line arguments
  74.         case 6:
  75.             sb = cl_StopBits(_argv[5]);       // override stop bits
  76.  
  77.         case 5:
  78.             ps = cl_Parity(_argv[4]);         // override parity
  79.  
  80.         case 4:
  81.             db = cl_DataBits(_argv[3]);       // override data bits
  82.  
  83.         case 3:
  84.             bd = cl_Baud(_argv[2]);           // override baud
  85.  
  86.         case 2:
  87.             cp = cl_CommPort(_argv[1]);       // override port
  88.             break;
  89.  
  90.         default:                                // bad command line -
  91.             printUsage();                     // print help and exit
  92.             exit(0);
  93.         }
  94.  
  95. // establish port
  96.     com = new SerialPort(cp,bd,db,ps,sb);  // taking defaults for buffer size
  97.                                                         // and break trapping: see SERIAL.H
  98.     if (com->lineOK())
  99.         {
  100. //        loop sending messages back and forth
  101.         do {
  102.             printf("\n  To port>>");
  103.             gets(buffer);
  104.  
  105. //            string "$$$" causes program to exit
  106.             if (strcmp(buffer,"$$$")==0)
  107.                 break;
  108.  
  109. //            send message out port
  110.             com->outstr(buffer);     // the message as a string
  111.             com->outbyte(0x0d);      // add a carriage return
  112.  
  113. //            clear buffer to use for incoming message
  114.             memset(buffer,'\0',sizeof(buffer));
  115.  
  116. //            read port until quiet for 2 seconds
  117.             int ii=0;
  118.  
  119.             while (   (com->inbyte((unsigned char)buffer[ii++],2000))
  120.                 &&(ii<sizeof(buffer)));
  121.  
  122.             printf("\nFrom port<<%s",buffer);
  123.             }
  124.             while (1);
  125.  
  126.         }
  127.     else
  128.         printf("\n Unable to establish port!\n");
  129.  
  130.     delete com;  // VERY IMPORTANT! Delete SerialPort before exit...
  131.              // Destructor resets captured interrupt vectors!
  132. }
  133. //============================================================================
  134. //
  135. //    Command line parse routines
  136. //
  137. //----------------------------------------------------------------------------
  138. StopBits
  139. cl_StopBits(const char *cltok)
  140. {
  141.     switch (atoi(cltok))
  142.         {
  143.         case 2:
  144.                 return S_2;
  145.  
  146.         case 1:
  147.                 return S_1;
  148.  
  149.         default:
  150.                 printf("\n Stop bits incorrect!\n");
  151.                 printUsage();
  152.                 exit(0);
  153.         }
  154.  
  155.     return (StopBits)0;
  156. }
  157.  
  158. //----------------------------------------------------------------------------
  159. Parity
  160. cl_Parity(const char *cltok)
  161. {
  162.     switch (toupper(*cltok))
  163.         {
  164.         case 'N':
  165.                 return P_N;
  166.  
  167.         case 'E':
  168.                 return P_E;
  169.  
  170.         case 'O':
  171.                 return P_O;
  172.  
  173.         default:
  174.                 printf("\n Parity selection incorrect!\n");
  175.                 printUsage();
  176.                 exit(0);
  177.         }
  178.  
  179.     return (Parity)0;
  180. }
  181.  
  182. //----------------------------------------------------------------------------
  183. DataBits
  184. cl_DataBits(const char *cltok)
  185. {
  186.     switch (atoi(cltok))
  187.         {
  188.         case 8:
  189.                 return D_8;
  190.  
  191.         case 7:
  192.                 return D_7;
  193.  
  194.         case 6:
  195.                 return D_6;
  196.  
  197.         case 5:
  198.                 return D_5;
  199.  
  200.         default:
  201.                 printf("\n Data bits incorrect!\n");
  202.                 printUsage();
  203.                 exit(0);
  204.         }
  205.  
  206.     return (DataBits)0;
  207. }
  208.  
  209. //----------------------------------------------------------------------------
  210. Baud
  211. cl_Baud(const char *cltok)
  212. {
  213.     switch (atoi(cltok))
  214.         {
  215.         case 2400:
  216.                 return B_2400;
  217.  
  218.         case 1200:
  219.                 return B_1200;
  220.  
  221.         case 300:
  222.                 return B_300;
  223.  
  224.         default:
  225.                 printf("\n Baud incorrect!\n");
  226.                 printUsage();
  227.                 exit(0);
  228.         }
  229.  
  230.     return (Baud)0;
  231. }
  232.  
  233. //----------------------------------------------------------------------------
  234. CommPort
  235. cl_CommPort(const char *cltok)
  236. {
  237.  
  238.     switch (atoi(cltok+strlen(cltok)-1)) // look at last byte of token
  239.         {
  240.         case 2:
  241.                 return COM_2;
  242.  
  243.         case 1:
  244.                 return COM_1;
  245.  
  246.         default:
  247.                 printf("\n Port incorrect!\n");
  248.                 printUsage();
  249.                 exit(0);
  250.         }
  251.  
  252.     return (CommPort)0;
  253. }
  254.  
  255. //============================================================================
  256. //
  257. //    Usage screen print
  258. //
  259. //----------------------------------------------------------------------------
  260. void
  261. printUsage(void)
  262. {
  263.     printf("\nUsage: [sppdemo [port [baud [databits [parity [stopbits]]]]]]");
  264.     printf("\n\n      port = COM1 | COM2\n      baud = 2400 | 1200 | 300\n  databits =    8 |    7\n    parity = NONE | EVEN | ODD\n  stopbits =    1 |    2");
  265.     printf("\n\n  Example (defaults):   sppdemo COM1 1200 8 N 1\n");
  266. }
  267.  
  268. //============================================================================
  269. //============================================================================
  270.